﻿using System;
using System.Diagnostics;
using System.Windows;
using personalplaner.common.controls;
using personalplaner.common.mvvm.common;

namespace personalplaner.common.services
{

	#region Interface

	public interface IMessageBoxService
	{
		MessageBoxResult Show(string messageBoxText);
		MessageBoxResult Show(string messageBoxText, string caption);
		MessageBoxResult Show(Window owner, string messageBoxText);
		MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button);
		MessageBoxResult Show(Window owner, string messageBoxText, string caption);
        MessageBoxResult Show(string messageBoxText, MessageBoxButton button);
		MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon);
		MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button);
		MessageBoxResult Show(string messageBoxText, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult);
		MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult);
		MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon);
		MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult, MessageBoxOptions options);
		MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult);
		MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult, MessageBoxOptions options);

        //MessageBoxResult Show(Exception exception, object context);
        //MessageBoxResult Show(Exception exception);

        //MessageBoxResult Show(string messageBoxText, MessageBoxButton button);
        //MessageBoxResult Show(string messageBoxText, MessageBoxImage icon);
        //MessageBoxResult Show(string messageBoxText, MessageBoxButton button, MessageBoxImage icon);
    }

	#endregion

	public class MessageBoxService : IMessageBoxService
	{
        //string GetNamespaceAndMethode()
        //{
        //    string namespace_methode = "";
        //    System.Diagnostics.StackFrame sf = new System.Diagnostics.StackFrame(2, true);
        //    System.Reflection.MethodBase mb = sf.GetMethod();

        //    string snamespace = ((System.Type)(((System.Reflection.MemberInfo)(mb)).DeclaringType)).FullName;
        //    string smethode = mb.Name;
        //    namespace_methode= Environment.NewLine + Environment.NewLine + snamespace + Environment.NewLine + smethode;
        //    return namespace_methode;
        //}

		public MessageBoxResult Show(string messageBoxText)
		{
            return MessageBoxExt.Show(null, messageBoxText, "");
		}

		public MessageBoxResult Show(string messageBoxText, string caption)
		{
            return MessageBoxExt.Show(null, messageBoxText, caption);
		}

		public MessageBoxResult Show(Window owner, string messageBoxText)
		{
            return MessageBoxExt.Show(owner, messageBoxText, "");
		}

		public MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button)
		{
            return MessageBoxExt.Show(null, messageBoxText, caption, button);
		}

		public MessageBoxResult Show(Window owner, string messageBoxText, string caption)
		{
            return MessageBoxExt.Show(owner, messageBoxText, caption);
		}

		public MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon)
		{
            return MessageBoxExt.Show(null, messageBoxText, caption, button, icon);
		}

		public MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button)
		{
            return MessageBoxExt.Show(owner, messageBoxText, caption, button);
		}

		public MessageBoxResult Show(string messageBoxText, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult)
		{
			if (defaultResult == MessageBoxResult.None)
			{
				if (button == MessageBoxButton.YesNo)
					defaultResult = MessageBoxResult.No;
				if (button == MessageBoxButton.OKCancel)
					defaultResult = MessageBoxResult.Cancel;
				if (button == MessageBoxButton.YesNo)
					defaultResult = MessageBoxResult.No;
			}

            return MessageBoxExt.Show(null, messageBoxText, "", button, icon, defaultResult);
		}

		public MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult)
		{
            return MessageBoxExt.Show(null, messageBoxText, caption, button, icon, defaultResult);
		}

		public MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon)
		{
            return MessageBoxExt.Show(owner, messageBoxText, caption, button, icon);
		}

		public MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult, MessageBoxOptions options)
		{
            return MessageBoxExt.Show(null, messageBoxText, caption, button, icon, defaultResult, options);
		}

		public MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult)
		{
            return MessageBoxExt.Show(owner, messageBoxText, caption, button, icon, defaultResult);
		}

		public MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult, MessageBoxOptions options)
		{
            return MessageBoxExt.Show(owner, messageBoxText, caption, button, icon, defaultResult, options);
		}

		public  MessageBoxResult Show(string messageBoxText, MessageBoxButton button)
		{
            return MessageBoxExt.Show(null, messageBoxText, "", button);
		}

		public  MessageBoxResult Show(string messageBoxText, MessageBoxImage icon)
		{
            return MessageBoxExt.Show(null, messageBoxText, "", MessageBoxButton.OK, icon);
		}

		public MessageBoxResult Show(string messageBoxText, MessageBoxButton button, MessageBoxImage icon)
		{
            return MessageBoxExt.Show(null, messageBoxText, "", button, icon);
		}
        
        //public MessageBoxResult Show(Exception exception)
        //{
        //    return Show(exception, null);
        //}

//        public MessageBoxResult Show(Exception exception, object context)
//        {
//            #region Handle Exception

//            if (Designer.IsDesignMode)
//                return MessageBoxResult.OK;

//            string msg = "";

//            FaultException<FaultExceptionSvc> faultException = null;
//            ApplicationException applicationException = exception as ApplicationException;
//            if (applicationException != null)
//                faultException = applicationException.InnerException as FaultException<FaultExceptionSvc>;

//            if (faultException == null)
//                faultException = exception as FaultException<FaultExceptionSvc>;
//            if (faultException != null)
//            {
//                bool isTeqError = false;
//                string methode = "";
//                string message = "";
//                string reason = "";
//                string snbr = "";
				
//                if (faultException.Detail != null)
//                {
//                    if (!string.IsNullOrEmpty(faultException.Detail.Methode))
//                        methode = string.Format("Methode: {0}", faultException.Detail.Methode);
//                    if (!string.IsNullOrEmpty(faultException.Detail.Message))
//                        message = string.Format("Message: {0}", faultException.Detail.Message);
//                    if (!string.IsNullOrEmpty(faultException.Detail.Reason))
//                        reason = string.Format("Reason: {0}", faultException.Detail.Reason);

//                    string errorMessage = TranslateException(faultException, context);

//                    if (faultException.Detail.Nbr.HasValue)
//                    {
//                        if (string.IsNullOrWhiteSpace(errorMessage))
//                            snbr = string.Format("Value: {0}", faultException.Detail.Nbr.Value);
//                        else
//                        {
//                            isTeqError = true;
//                            if (!string.IsNullOrWhiteSpace(reason))
//                            {
//                                reason = faultException.Detail.Reason;
//                                //faultException.Detail.Reason= "SetWahrung";
//                                int pos = reason.IndexOf("(");//reason befindet sich zwischen ()
//                                if (pos != -1)
//                                {
//                                    reason = reason.Substring(pos + 1);
//                                    pos = reason.IndexOf(")");
//                                    if (pos != -1)
//                                        reason = reason.Substring(0, pos);

//                                    reason = reason.Trim();
//                                    if (reason.Length > 0)
//                                    {
//                                        if (!string.IsNullOrEmpty(faultException.Detail.Methode))
//                                            methode = string.Format("{0}", faultException.Detail.Methode);

//                                        methode += "(" + reason + ")";
//                                        reason = "";
//                                    }
//                                }
//                                else
//                                {
//                                    //wenn reason und methode identisch, dann reason entfernen
//                                    pos = methode.LastIndexOf(".");
//                                    if (pos != -1)
//                                    {
//                                        string tmethode = methode.Substring(pos + 1);
//                                        if (tmethode == faultException.Detail.Reason)
//                                        {
//                                            methode = faultException.Detail.Methode;
//                                            reason = "";
//                                        }
//                                    }
//                                }
//                            }
//                            message = errorMessage;
//                        }
//                    }
//                    else if (!string.IsNullOrEmpty(errorMessage))
//                        message = errorMessage;
//                }

//                msg = "FaultException" + Environment.NewLine;
//                if (methode.Length != 0)
//                    msg += methode + Environment.NewLine;
//                if (reason.Length != 0)
//                    msg += reason + Environment.NewLine;
//                if (snbr.Length != 0)
//                    msg += snbr + Environment.NewLine;
//                if (message.Length != 0)
//                    msg += message + Environment.NewLine;

//                msg += Environment.NewLine;

//                if ((isTeqError) && (message.Length > 0))
//                {
//                    msg = message;
//                    if (methode.Length != 0)
//                        msg += Environment.NewLine + methode;
//                }
//            }

			
//            if (msg.Length == 0)
//            {
//                CommunicationException ce = exception as CommunicationException;
//                if (ce != null)
//                {
//                    string[] st = exception.StackTrace.Split('\n');
//                    string methode = "";
//                    foreach (var line in st)
//                    {
//                        int pos = line.IndexOf("sage200.");
//                        if (pos == -1)
//                            continue;
//                        methode = line.Substring(pos);
//                        pos = methode.IndexOf("(");
//                        if (pos != -1)
//                            methode = methode.Substring(0, pos);
//                        break;
//                    }
//                    msg += "Methode:" + Environment.NewLine + methode+Environment.NewLine;
//                    msg += "Message:" + Environment.NewLine + exception.Message;
//                    msg += this.GetNamespaceAndMethode();
//                }
//                else
//                {

//                    msg = this.GetNamespaceAndMethode().Trim();
//                    msg += "Unhandled exception occured:\r\n\r\nMessage:\r\n" + exception.Message;
//#if DEBUG



//                    if (exception.InnerException != null)
//                        msg += "\r\n\r\nInnerException:\r\n" + exception.InnerException;
//                    if (exception.StackTrace != null)
//                        msg += "\r\n\r\nStackTrace:\r\n" + exception.StackTrace;
//#endif
//                }
//            }
//            else
//                msg = msg.Trim()+ this.GetNamespaceAndMethode();

//            Trace.WriteLine("sage200.gui.common.mvvm.services.MessageBoxService.Show(Exception exception");

//            try
//            {
//                string caption = GetCaption() + " (" + exception.Source + ")";
//                enMessageBoxResultExt resultExt = MessageBoxExt.Show(null, msg, caption, enMessageBoxButtonExt.Ok, MessageBoxImage.Stop);
//                return ConvertToMessageBoxResult(resultExt);
//            }
//            catch (Exception exception2)
//            {
//                Trace.WriteLine(exception2);
//                Window window = Window.GetWindow(null);
//                if (window!=null)
//                    window.Activate();
//                return MessageBoxResult.OK;
//            }

//            #endregion
//        }

//        public MessageBoxResult Show(Exception exception, object context)
//        {
//            #region Handle Exception

//            if (Designer.IsDesignMode)
//                return MessageBoxResult.OK;

//            string msg = "";

//            Exception displayException = null;

//            FaultException<FaultExceptionSvc> faultException = null;
//            ApplicationException applicationException = exception as ApplicationException;
//            if (applicationException != null)
//                faultException = applicationException.InnerException as FaultException<FaultExceptionSvc>;

//            if (faultException == null)
//                faultException = exception as FaultException<FaultExceptionSvc>;
//            if (faultException != null)
//            {
//                displayException = new sage200.gui.common.FaultExceptionExt(faultException.Detail);
//                //bool isTeqError = false;
//                //string methode = "";
//                //string message = "";
//                //string reason = "";
//                //string snbr = "";

//                //if (faultException.Detail != null)
//                //{
//                //    if (!string.IsNullOrEmpty(faultException.Detail.Methode))
//                //        methode = string.Format("Methode: {0}", faultException.Detail.Methode);
//                //    if (!string.IsNullOrEmpty(faultException.Detail.Message))
//                //        message = string.Format("Message: {0}", faultException.Detail.Message);
//                //    if (!string.IsNullOrEmpty(faultException.Detail.Reason))
//                //        reason = string.Format("Reason: {0}", faultException.Detail.Reason);

//                //    string errorMessage = TranslateException(faultException, context);

//                //    if (faultException.Detail.Nbr.HasValue)
//                //    {
//                //        if (string.IsNullOrWhiteSpace(errorMessage))
//                //            snbr = string.Format("Value: {0}", faultException.Detail.Nbr.Value);
//                //        else
//                //        {
//                //            isTeqError = true;
//                //            if (!string.IsNullOrWhiteSpace(reason))
//                //            {
//                //                reason = faultException.Detail.Reason;
//                //                //faultException.Detail.Reason= "SetWahrung";
//                //                int pos = reason.IndexOf("(");//reason befindet sich zwischen ()
//                //                if (pos != -1)
//                //                {
//                //                    reason = reason.Substring(pos + 1);
//                //                    pos = reason.IndexOf(")");
//                //                    if (pos != -1)
//                //                        reason = reason.Substring(0, pos);

//                //                    reason = reason.Trim();
//                //                    if (reason.Length > 0)
//                //                    {
//                //                        if (!string.IsNullOrEmpty(faultException.Detail.Methode))
//                //                            methode = string.Format("{0}", faultException.Detail.Methode);

//                //                        methode += "(" + reason + ")";
//                //                        reason = "";
//                //                    }
//                //                }
//                //                else
//                //                {
//                //                    //wenn reason und methode identisch, dann reason entfernen
//                //                    pos = methode.LastIndexOf(".");
//                //                    if (pos != -1)
//                //                    {
//                //                        string tmethode = methode.Substring(pos + 1);
//                //                        if (tmethode == faultException.Detail.Reason)
//                //                        {
//                //                            methode = faultException.Detail.Methode;
//                //                            reason = "";
//                //                        }
//                //                    }
//                //                }
//                //            }
//                //            message = errorMessage;
//                //        }
//                //    }
//                //    else if (!string.IsNullOrEmpty(errorMessage))
//                //        message = errorMessage;
//                //}

//                //msg = "FaultException" + Environment.NewLine;
//                //if (methode.Length != 0)
//                //    msg += methode + Environment.NewLine;
//                //if (reason.Length != 0)
//                //    msg += reason + Environment.NewLine;
//                //if (snbr.Length != 0)
//                //    msg += snbr + Environment.NewLine;
//                //if (message.Length != 0)
//                //    msg += message + Environment.NewLine;

//                //msg += Environment.NewLine;

//                //if ((isTeqError) && (message.Length > 0))
//                //{
//                //    msg = message;
//                //    if (methode.Length != 0)
//                //        msg += Environment.NewLine + methode;
//                //}
//            }


//            //if (msg.Length == 0)
//            if(displayException==null)
//            {
//                displayException = exception as CommunicationException;
//                if (displayException == null)
//                {
//                    msg = GetNamespaceAndMethode().Trim();
//                    msg += "Unhandled exception occured:\r\n\r\nMessage:\r\n" + exception.Message;
//#if DEBUG



//                    if (exception.InnerException != null)
//                        msg += "\r\n\r\nInnerException:\r\n" + exception.InnerException;
//                    if (exception.StackTrace != null)
//                        msg += "\r\n\r\nStackTrace:\r\n" + exception.StackTrace;

//                    displayException = new Exception(msg, exception.InnerException);
//#else
//                    displayException = new Exception(msg);
//#endif

//                }
////                CommunicationException ce = exception as CommunicationException;
////                if (ce != null)
////                {
////                    string[] st = exception.StackTrace.Split('\n');
////                    string methode = "";
////                    foreach (var line in st)
////                    {
////                        int pos = line.IndexOf("sage200.");
////                        if (pos == -1)
////                            continue;
////                        methode = line.Substring(pos);
////                        pos = methode.IndexOf("(");
////                        if (pos != -1)
////                            methode = methode.Substring(0, pos);
////                        break;
////                    }
////                    msg += "Methode:" + Environment.NewLine + methode + Environment.NewLine;
////                    msg += "Message:" + Environment.NewLine + exception.Message;
////                    msg += this.GetNamespaceAndMethode();
////                }
////                else
////                {

////                    msg = this.GetNamespaceAndMethode().Trim();
////                    msg += "Unhandled exception occured:\r\n\r\nMessage:\r\n" + exception.Message;
////#if DEBUG



////                    if (exception.InnerException != null)
////                        msg += "\r\n\r\nInnerException:\r\n" + exception.InnerException;
////                    if (exception.StackTrace != null)
////                        msg += "\r\n\r\nStackTrace:\r\n" + exception.StackTrace;
////#endif
////                }
//            }
//            //else
//            //    msg = msg.Trim() + this.GetNamespaceAndMethode();



//            Trace.WriteLine("sage200.gui.common.mvvm.services.MessageBoxService.Show(Exception exception");

//            try
//            {
//                string caption = GetCaption() + " (" + exception.Source + ")";
//                //enMessageBoxResultExt resultExt = MessageBoxExt.Show(null, msg, caption, enMessageBoxButtonExt.Ok, MessageBoxImage.Stop);
//                enMessageBoxResultExt resultExt = MessageBoxExt.Show(null, displayException, caption, enMessageBoxButtonExt.Ok, MessageBoxImage.Stop);
//                return ConvertToMessageBoxResult(resultExt);
//            }
//            catch (Exception exception2)
//            {
//                Trace.WriteLine(exception2);
//                Window window = Window.GetWindow(null);
//                if (window != null)
//                    window.Activate();
//                return MessageBoxResult.OK;
//            }

//            #endregion
//        }

//        #region MessageBoxExt

//        public enMessageBoxResultExt ShowMessage(Window owner, object messageBoxContent, string caption)
//        {
//            return MessageBoxExt.Show(owner, messageBoxContent, GetCaption(caption));
//        }

//        public enMessageBoxResultExt ShowMessage(Window owner, object messageBoxContent, string caption, enMessageBoxButtonExt button)
//        {
//            return MessageBoxExt.Show(owner, messageBoxContent, GetCaption(caption), button);
//        }

//        public enMessageBoxResultExt ShowMessage(Window owner, object messageBoxContent, string caption, enMessageBoxButtonExt button, MessageBoxImage image)
//        {
//            return MessageBoxExt.Show(owner, messageBoxContent, GetCaption(caption), button, image);
//        }

//        public enMessageBoxResultExt ShowMessage(Window owner, Exception exception, object context)
//        {
//            #region Handle Exception

//            if (Designer.IsDesignMode)
//                return enMessageBoxResultExt.Ok;

//            string msg = "";

//            FaultException<FaultExceptionSvc> faultException = null;
//            ApplicationException applicationException = exception as ApplicationException;
//            if (applicationException != null)
//                faultException = applicationException.InnerException as FaultException<FaultExceptionSvc>;

//            if (faultException == null)
//                faultException = exception as FaultException<FaultExceptionSvc>;
//            if (faultException != null)
//            {
//                bool isTeqError = false;
//                string methode = "";
//                string message = "";
//                string reason = "";
//                string snbr = "";

//                if (faultException.Detail != null)
//                {
//                    if (!string.IsNullOrEmpty(faultException.Detail.Methode))
//                        methode = string.Format("Methode: {0}", faultException.Detail.Methode);
//                    if (!string.IsNullOrEmpty(faultException.Detail.Message))
//                        message = string.Format("Message: {0}", faultException.Detail.Message);
//                    if (!string.IsNullOrEmpty(faultException.Detail.Reason))
//                        reason = string.Format("Reason: {0}", faultException.Detail.Reason);

//                    string errorMessage = TranslateException(faultException, context);

//                    if (faultException.Detail.Nbr.HasValue)
//                    {
//                        if (string.IsNullOrWhiteSpace(errorMessage))
//                            snbr = string.Format("Value: {0}", faultException.Detail.Nbr.Value);
//                        else
//                        {
//                            isTeqError = true;
//                            if (!string.IsNullOrWhiteSpace(reason))
//                            {
//                                reason = faultException.Detail.Reason;
//                                //faultException.Detail.Reason= "SetWahrung";
//                                int pos = reason.IndexOf("(");//reason befindet sich zwischen ()
//                                if (pos != -1)
//                                {
//                                    reason = reason.Substring(pos + 1);
//                                    pos = reason.IndexOf(")");
//                                    if (pos != -1)
//                                        reason = reason.Substring(0, pos);

//                                    reason = reason.Trim();
//                                    if (reason.Length > 0)
//                                    {
//                                        if (!string.IsNullOrEmpty(faultException.Detail.Methode))
//                                            methode = string.Format("{0}", faultException.Detail.Methode);

//                                        methode += "(" + reason + ")";
//                                        reason = "";
//                                    }
//                                }
//                                else
//                                {
//                                    //wenn reason und methode identisch, dann reason entfernen
//                                    pos = methode.LastIndexOf(".");
//                                    if (pos != -1)
//                                    {
//                                        string tmethode = methode.Substring(pos + 1);
//                                        if (tmethode == faultException.Detail.Reason)
//                                        {
//                                            methode = faultException.Detail.Methode;
//                                            reason = "";
//                                        }
//                                    }
//                                }
//                            }
//                            message = errorMessage;
//                        }
//                    }
//                    else if (!string.IsNullOrEmpty(errorMessage))
//                        message = errorMessage;
//                }

//                msg = "FaultException" + Environment.NewLine;
//                if (methode.Length != 0)
//                    msg += methode + Environment.NewLine;
//                if (reason.Length != 0)
//                    msg += reason + Environment.NewLine;
//                if (snbr.Length != 0)
//                    msg += snbr + Environment.NewLine;
//                if (message.Length != 0)
//                    msg += message + Environment.NewLine;

//                msg += Environment.NewLine;

//                if ((isTeqError) && (message.Length > 0))
//                {
//                    msg = message;
//                    if (methode.Length != 0)
//                        msg += Environment.NewLine + methode;
//                }
//            }


//            if (msg.Length == 0)
//            {
//                CommunicationException ce = exception as CommunicationException;
//                if (ce != null)
//                {
//                    string[] st = exception.StackTrace.Split('\n');
//                    string methode = "";
//                    foreach (var line in st)
//                    {
//                        int pos = line.IndexOf("sage200.");
//                        if (pos == -1)
//                            continue;
//                        methode = line.Substring(pos);
//                        pos = methode.IndexOf("(");
//                        if (pos != -1)
//                            methode = methode.Substring(0, pos);
//                        break;
//                    }
//                    msg += "Methode:" + Environment.NewLine + methode + Environment.NewLine;
//                    msg += "Message:" + Environment.NewLine + exception.Message;
//                    msg += this.GetNamespaceAndMethode();
//                }
//                else
//                {

//                    msg = this.GetNamespaceAndMethode().Trim();
//                    msg += "Unhandled exception occured:\r\n\r\nMessage:\r\n" + exception.Message;
//#if DEBUG



//                    if (exception.InnerException != null)
//                        msg += "\r\n\r\nInnerException:\r\n" + exception.InnerException;
//                    if (exception.StackTrace != null)
//                        msg += "\r\n\r\nStackTrace:\r\n" + exception.StackTrace;
//#endif
//                }
//            }
//            else
//                msg = msg.Trim() + this.GetNamespaceAndMethode();

//            Trace.WriteLine("sage200.gui.common.mvvm.services.MessageBoxService.Show(Exception exception");

//            try
//            {
//                string caption = GetCaption() + " (" + exception.Source + ")";
//                return MessageBoxExt.Show(owner, msg, caption, enMessageBoxButtonExt.Ok, MessageBoxImage.Stop);
//            }
//            catch (Exception exception2)
//            {
//                Trace.WriteLine(exception2);
//                Window window = Window.GetWindow(null);
//                if (window != null)
//                    window.Activate();
//                return enMessageBoxResultExt.Ok;
//            }

//            #endregion
//        }

//        public enMessageBoxResultExt ShowMessage(Window owner, Exception exception)
//        {
//            return ShowMessage(owner: owner, exception: exception, context: null);
//        }

//        #endregion

        //#region Converter

        //private MessageBoxResult ConvertToMessageBoxResult(enMessageBoxResultExt resultExt)
        //{
        //    MessageBoxResult result = MessageBoxResult.None;

        //    string value = resultExt.ToString();
        //    if (resultExt == enMessageBoxResultExt.Ok)
        //        value = resultExt.ToString().ToUpper();

        //    if (Enum.TryParse<MessageBoxResult>(value, out result))
        //        return result;

        //    return result;
        //}

        //private enMessageBoxResultExt ConvertToMessageBoxResultExt(MessageBoxResult result)
        //{
        //    enMessageBoxResultExt resultExt = enMessageBoxResultExt.None;

        //    string value = result.ToString();
        //    if (result == MessageBoxResult.OK)
        //        value = "Ok";

        //    if (Enum.TryParse<enMessageBoxResultExt>(value, out resultExt))
        //        return resultExt;

        //    return resultExt;
        //}

        //private enMessageBoxButtonExt ConvertToMessageBoxButtonExt(MessageBoxButton button)
        //{
        //    enMessageBoxButtonExt buttonExt = enMessageBoxButtonExt.Ok;
        //    switch (button)
        //    {
        //        case MessageBoxButton.OK:
        //            buttonExt = enMessageBoxButtonExt.Ok;
        //            break;
        //        case MessageBoxButton.OKCancel:
        //            buttonExt = enMessageBoxButtonExt.OkCancel;
        //            break;
        //        case MessageBoxButton.YesNoCancel:
        //            buttonExt = enMessageBoxButtonExt.YesNoCancel;
        //            break;
        //        case MessageBoxButton.YesNo:
        //            buttonExt = enMessageBoxButtonExt.YesNo;
        //            break;
        //    }

        //    return buttonExt;
        //}

        //#endregion

    }
}
